package com.dianwang.utils;

import java.io.IOException;

/**
 * DefectLibrarySingleton 使用单例模式管理 DefectLibrary 的实例。
 */
public class DefectLibrarySingleton {
    private static DefectLibrary instance;

    // 私有构造函数，防止外部实例化
    private DefectLibrarySingleton() {
    }

    /**
     * 获取 DefectLibrary 的单例实例。
     * 第一次调用时需要提供 Excel 文件路径以初始化实例。
     *
     * @param excelFilePath Excel 文件路径
     * @return DefectLibrary 实例
     * @throws IOException 如果加载缺陷库时发生错误
     */
    public static synchronized DefectLibrary getInstance(String excelFilePath) throws IOException {
        if (instance == null) {
            instance = new DefectLibrary(excelFilePath);
        }
        return instance;
    }

    /**
     * 获取已经初始化的 DefectLibrary 实例。
     *
     * @return DefectLibrary 实例
     * @throws IllegalStateException 如果实例尚未初始化
     */
    public static synchronized DefectLibrary getInstance() {
        if (instance == null) {
            throw new IllegalStateException("DefectLibrary 尚未初始化，请先调用 getInstance(String excelFilePath) 方法。");
        }
        return instance;
    }
}
